package com.platform.modules.order;

import com.platform.modules.mall.entity.MallGoodsEntity;
import com.platform.modules.mall.entity.MallOrderEntity;
import com.platform.modules.mall.entity.MallOrderGoodsEntity;

import java.util.List;

public interface IOrderBuild {

    /**
     * 基础校验
     */
    void paramsVerify();

    /**
     * 限购判断
     */
    void limited();

    /**
     * 减库存
     */
    void minusGoodsNumber();

    /**
     * 设置订单信息
     */
    MallOrderEntity orderInfo(MallGoodsEntity goods);

    /**
     * 设置订单商品
     */
    List<MallOrderGoodsEntity> orderGoods();

    /**
     * 订单保存后执行
     */
    void saveAfter();

    /**
     * orderInfo   orderGoods   saveAfter  的异常捕获
     * 异常处理  （可以用来回退 redis 库存）
     */
    void exceptionHandle();

}
